package cn.zhfeat.hatch.rpcimpl;

import java.util.List;

import javax.annotation.Resource;
import cn.zhfeat.hatch.dto.sysuser.SysAttributeDto;
import cn.zhfeat.hatch.dto.sysuser.SysRoleAttributeDto;
import cn.zhfeat.hatch.dto.sysuser.SysRoleAuthorityDto;
import cn.zhfeat.hatch.dto.sysuser.SysRoleDto;
import cn.zhfeat.hatch.entity.sysuser.SysAttribute;
import cn.zhfeat.hatch.entity.sysuser.SysRole;
import cn.zhfeat.hatch.entity.sysuser.SysRoleAttribute;
import cn.zhfeat.hatch.entity.sysuser.SysRoleAuthority;
import cn.zhfeat.hatch.rpc.IRoleRpcService;
import cn.zhfeat.hatch.service.IRoleService;
import org.springframework.stereotype.Service;
import com.github.pagehelper.PageInfo;


/**
 * @description:  角色相关内部rpc接口
 *
 * @author ZhangHao
 * @date 2018年5月10日 上午10:11:31 
 * @version 1.0.0.1
 */
@Service("roleRpcService")
public class RoleRpcServiceImpl implements IRoleRpcService {

	@Resource
	private IRoleService roleService;
	/**
	 * @description: 企业角色列表展示接口，列表分页
	 * 
	 * 可按角色名称进行搜索
	 *  
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午5:22:02 
	 * @version 1.0.0.1
	 */
	@Override
	public PageInfo<SysRole> ajaxPageListByDto(SysRoleDto dto) {
		if(dto.getCid() == null){
			return null;
		}
		return roleService.pageList(dto);
	}

	/**
	 * @description: 企业全部角色查询接口，无需分页
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午5:29:47 
	 * @version 1.0.0.1
	 */
	@Override
	public List<SysRole> findListByDto(SysRoleDto dto) {
		if(dto.getCid() == null){
			return null;
		}
		return roleService.findListByDto(dto);
	}

	/**
	 * @description: 查询符合条件的角色数量
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午5:58:33 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer selectCountByType(SysRole entity) {
		if(entity.getCid() == null){
			return null;
		}
		return roleService.count(entity);
	}

	/**
	 * @description: 根据主键ID更新角色数据，如果id为null或updateTime为null则返回0，标识更新失败
	 *		逻辑删除也调用此方法。
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:00:19 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer updateSelective(SysRole entity) {
		if(entity.getId() == null){
			return 0;
		}else if(entity.getUpdateTime() == null){
			return 0;
		}
		return roleService.updateSelective(entity);
	}

	/**
	 * @description: 插入角色数据并返回自增id
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:04:27 
	 * @version 1.0.0.1
	 */
	@Override
	public SysRole insertSelective(SysRole entity) {
		if(entity.getCid() == null){
			return null;
		}
		int result = roleService.insertSelective(entity);
		if(result > 0) {
			return entity;
		}
		return null;
	}

	/**
	 * @description: 根据条件定位一条角色信息
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:07:56 
	 * @version 1.0.0.1
	 */
	@Override
	public SysRole selectSysRoleByType(SysRoleDto dto) {
		if(dto.getCid() == null){
			return null;
		}
		return roleService.findByType(dto);
	}

	/**
	 * @description: 查询角色对应的全部菜单
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:10:24 
	 * @version 1.0.0.1
	 */
	@Override
	public List<SysRoleAuthority> findSysRoleAuthorityByDto(SysRoleAuthorityDto dto) {
		return roleService.findSysRoleAuthorityByDto(dto);
	}

	/**
	 * @description: 增加角色和菜单的对应关系
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:30:14 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer insertSysRoleAuthority(SysRoleAuthority entity) {
		if(entity.getRoleId() == null){
			return null;
		}else if(entity.getAuthorityId() == null){
			return null;
		}
		return roleService.insertSysRoleAuthority(entity);
	}

	/**
	 * @description: 根据角色id更新角色菜单对应关系，如果角色id为null或updateTime为null则返回0，标识更新失败
	 *		逻辑删除也调用此方法。
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:33:05 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer updateSysRoleAuthorityByDto(SysRoleAuthorityDto dto) {
		if(dto.getUpdateTime() == null){
			return 0;
		}
		return roleService.updateSysRoleAuthorityByDto(dto);
	}
	
	/**
	 * @description: 增加角色属性的对应关系
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月9日 下午3:45:27 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer insertSysRoleAttribute(SysRoleAttribute entity) {
		return roleService.insertSysRoleAttribute(entity);
	}

	/**
	 * @description: 根据角色id更新角色属性对应关系，如果updateTime为null则返回0，标识更新失败
	 *		逻辑删除也调用此方法。
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月21日 下午7:41:45 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer updateSysRoleAttribute(SysRoleAttribute entity) {
		if(entity.getUpdateTime() == null) {
			return 0;
		}
		return roleService.updateSysRoleAttribute(entity);
	}

	
	/**
	 * @description: 根据条件查询数据属性
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月23日 下午6:40:19 
	 * @version 1.0.0.1
	 */
	@Override
	public SysAttribute findSysAttributeByType(SysAttributeDto dto) {
		return roleService.findSysAttributeByType(dto);
	}

	
	/**
	 * @description: 根据条件定位一条角色菜单信息
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月23日 下午9:03:01 
	 * @version 1.0.0.1
	 */
	@Override
	public SysRoleAuthority findSysRoleAuthorityByType(SysRoleAuthorityDto dto) {
		return roleService.findSysRoleAuthorityByType(dto);
	}

	
	/**
	 * @description: 根据条件定位一条角色数据权限信息
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月23日 下午9:04:16 
	 * @version 1.0.0.1
	 */
	@Override
	public SysRoleAttribute findSysRoleAttributeByType(SysRoleAttributeDto dto) {
		return roleService.findSysRoleAttributeByType(dto);
	}

	
	/**
	 * @description: 增加一条数据属性信息
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年6月2日 下午3:40:59 
	 * @version 1.0.0.1
	 */
	@Override
	public SysAttribute insertSysAttribute(SysAttribute entity) {
		if(entity.getCid() == null) {
			return null;
		}
		int tag = roleService.insertSysAttribute(entity);
		if(tag > 0) {
			return entity;
		}else {
			return null;
		}
	}

}
